package com.yuw.streamdemo;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import org.junit.jupiter.api.Test;

public class SteamTestDriver {

	/**
	 * 使用输入流读取一个文件内容到cpu中，然后使用输出流将内容写出到指定位置的外部文件中。 （使用输入输出流进行了文件的复制）
	 */
	@Test
	public void test01() {
		try {
			// 创建一个输入流对象
			InputStream is = new FileInputStream("D:\\temp\\streamfiles/in01.txt");
			// 输出流对象
			// 构造方法的第二个参数决定写入文件的内容是接着写还是从开头覆盖写； 默认为false，从开头覆盖写；true，从末位接着写
			OutputStream os = new FileOutputStream("D:/temp/streamfiles/in01_out.txt", true);
			// 用于读取输入流的字节数组
			byte[] b = new byte[1024];
			// 将输入流中的内容读取到用于存储的字节数组中
			int len = is.read(b);
			while (len != -1) {
				// 使用输出流输出内容
				System.out.println(new String(b, "gbk")); // 可以使用String的构造方法指定编码格式
				os.write(b, 0, len);
				// 继续往下读
				len = is.read(b);
			}

			// 关闭资源
			if (is != null) {
				is.close();
			}
			if (os != null) {
				// 先清空在关闭
				os.flush();
				os.close();
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			// 关闭资源
		}
	}
}
